Amazon CloudWatch のキーワード その1
Amazon CloudWatchのキーワードを理解する その1
CloudWatchへの理解を深めるために良く出てくるキーワードについてご紹介します。
メトリクス(Metrics)
メトリクスは、CloudWatchの基本概念であり、ある時間ごとのデータ集合を表します。 ユーザかAWS製品はCloudWatchへメトリクスのデータを発行すると、CloudWatchとユーザは時系列の統計データを取得します。 例えば、あるAmazon EC2 のCPU使用率はメトリクスの1つで、ELB(Elastic Load Balancer)のレイテンシ(待ち時間)もメトリクスの1つです。
以下は、Amazon EC2 のメトリクス一覧です。
メニュー部分を見て頂きますと、EC2の他にRDS,EBS,ELB,SNS,SQSがありますね。未だ全てのAWSサービスを網羅していませんがこれから増えるのではないでしょうか。
メトリクスは、名前/ネームスペース/ディメンションにおいて一意である必要があります。各データ集合は、タイムスタンプとユニット(測定単位でオプション指定)を持ちます。ユーザが統計へリクエストするとき、返されるデータはネームスペース/メトリクス名/ディメンション/ユニットによって特定されます。これらが不一致だと取得できません。
ユーザはPutMetricDataというAPIを用いて、カスタムメトリクスの作成やデータの発行ができます。Amazon CloudWatchは重複する発行があった場合にはそれらを集約します。
CloudWatchは統計データを2週間まで保管してくれます。
ネームスペース(Namespaces)
ネームスペースは、複数のメトリクスをまとめてコンテナ(箱)で管理する概念です。ネームスペースによって、メトリクスは分離されますので、異なるアプリケーションにおいて同じ統計で間違った集約はされません。ネームスペース名はメトリクスを作成する際に決めます。256文字以内でValidなXMLに付けられる文字である必要があります。デフォルトのネームスペース名はありませんのでユーザは命名する必要があります。
以下は、AWS製品が持っているネームスペース名です。"AWS/"から始まる文字列です。
ディメンション(Dimensions)
ディメンション(次元)は、キーバリューの形でメトリクスを特定するために用います。全てのメトリクスは特性が定義されていて、ディメンションはその特性をカテゴリーとして考えることができます。1つのメトリクスには最大で10のディメンションを定義できます。
Amazon EC2 では、以下のようなディメンションが定義されています。AutoScalingのグループ名などをディメンションに指定できます。
- AutoScalingGroupName
- ImageId
- InstanceId
- InstanceType
以下はコンソール画面です。アラートが設定されています。ディメンションでインスタンスIDを指定してCPU使用率が閾値を超えたら通知されるように設定しています。この、インスタンスIDを指定している部分がディメンションです。
タイムスタンプ(Time stamps)
CloudWatchは、データを登録する際にタイムスタンプを付加しなければいけません。タイムスタンプの時間範囲は、過去日付で2週間前まで、未来日付で1日後までとなっています。もし、タイムスタンプが付加されなかった場合は、データが登録された日時で登録されます。ちなみに、このタイムスタンプの形式が曲者です。たとえば、2007-01-31T23:59:59Z のようにdateTimeオブジェクト形式(http://www.w3.org/TR/xmlschema-2/#dateTime)にする必要があります。また、UTC時間で登録してください。コマンドラインや自作APIからアクセスする場合は、この日付生成部分をライブラリ化したほうがよいでしょう。
ユニット(Units)
ユニットは、統計する単位を表します。例えば、Amazon EC2 の NetworkIn メトリクスのユニットは Bytes です。カスタムメトリクスを定義する場合には、新たに単位を指定することができます。パーセントや温度など。これらは集約して並べることができるわけです。
以下は、CloudWatchが既に定義しているユニットの一覧です。
- Seconds
- Microseconds
- Milliseconds
- Bytes
- Kilobytes
- Megabytes
- Gigabytes
- Terabytes
- Bits
- Kilobits
- Megabits
- Gigabits
- Terabits
- Percent
- Count
- Bytes/Second
- Kilobytes/Second
- Megabytes/Second
- Gigabytes/Second
- Terabytes/Second
- Bits/Second
- Kilobits/Second
- Megabits/Second
- Gigabits/Second
- Terabits/Second
- Count/Second
- None
CloudWatch自体はユニットに意味を持っていませんが、CloudWatchを利用する他のアプリケーションはユニットに意味を見いだします。もし、ユニットを指定せずにデータを発行した場合、CloudWatchはユニット名としてNoneを指定します。
ユニットを指定せずに統計データを取得するとき、CloudWatchは同じユニットの全てのデータを集めます。もし同じメトリクス名で2つの異なるユニットを指定しているならば、2つの統計データが取得できるはずです。